package com.gitee.algorithm.sort;
/*
选择排序：
//假定第一个索引处元素为最小值，每趟找出最小值与假定索引处元素比较交换
1找最小索引                        比较
2第一处索引交换最小元素索引         交换


 */
public class Selection {


    /*
    1.对数组内的元素进行排序
 */
    public static void sort(Comparable[] a) {
        for(int i=0;i<=a.length-2;i++){//趟数1,2,3，4,5,6,7
            //找最小索引元素，首先定义一个最小元素索引用来记录最小元素，默认从参与排序的第一个元素开始i开始
            int indexMin=i;
            for(int j=i+1;j<a.length;j++){//比较交换次数7,6,5,4,3,2,1
                if(greater(a[indexMin],a[j])){
                    indexMin=j;
                }
            }
            //交换最小索引位置元素和当前i号位置
            exch(a,i,indexMin);
        }

    }



    /*
    2.判断v是否大于w
  */
    private static boolean greater(Comparable v,Comparable w){
        return v.compareTo(w)>0;
    }



    /*
    3.交换a数组中，索引i和索引j处的值
         */
    private static void exch(Comparable[] a,int i,int j){
        Comparable  temp=a[i];
        a[i]=a[j];
        a[j]=temp;

    }
}
